<?php
session_start(); //--> Inizializzo la sessione

/**
 * Classe per la gestione delle Sessioni.
 * Questa classe è basata sull'assegnazione dei valori tramite i metodi magici
 * __set e __get.
 *
 * @author Damiano Ciarla
 * @category lib
 * @example
 * Assegnazione di un valore alla sessione: $session->name = 'Gianni'
 * Lettura di una valore dalla sessione: echo $session->name;
 * Per l'utilizzo della variabile $session all'interno dei metodi è necessario
 * caricarla tramite 'global'
 * @version 1.0
 */
final class Session
{
	public function __set($name, $value)
	{
        $_SESSION[$name] = $value;
    }

    public function __get($name)
	{
        return ((isset($_SESSION[$name])) ? $_SESSION[$name] : NULL);
    }

	public function loadEntity($entity)
	{
		$entityVars = $entity->_getVarsFromColumn();

		foreach ($entityVars as $name => $value)
		{
			$method_name = "get".ucfirst($value);

			if (method_exists($entity, $method_name))
				$_SESSION[$value] = call_user_func_array(array($entity, $method_name), array($value));
		}
	}
}

//--> Creazione dell'istanza da usare in tutto il progetto
$session = new Session();
?>
